357748f5be93b3d624c856453d3b47c50fd90f60,platform/lang-impl/src/com/intellij/codeInsight/folding/impl/DocumentFoldingInfo.java,DocumentFoldingInfo,setToEditor,#Editor#,97
Before Change
if (psiFile == null) return;
Map<PsiElement, FoldingDescriptor> ranges = null;
for(int i = 0; i < myPsiElementsOrRangeMarkers.size(); i++){
Object o = myPsiElementsOrRangeMarkers.get(i);
if (o instanceof PsiElement) {
PsiElement element = (PsiElement)o;
if (!element.isValid()) continue;
if (ranges == null) ranges = buildRanges(editor, psiFile);
FoldingDescriptor descriptor = ranges.get(element);
if (descriptor == null) continue;
TextRange range = descriptor.getRange();
FoldRegion region = FoldingUtil.findFoldRegion(editor, range.getStartOffset(), range.getEndOffset());
if (region != null) {
boolean state = myExpandedStates.get(i).booleanValue();
region.setExpanded(state);
}
}
else if (o instanceof RangeMarker) {
RangeMarker marker = (RangeMarker)o;
if (!marker.isValid()) continue;
FoldRegion region = FoldingUtil.findFoldRegion(editor, marker.getStartOffset(), marker.getEndOffset());
if (region == null) {
String placeHolderText = myPlaceholderTexts.get(marker);
region = editor.getFoldingModel().addFoldRegion(marker.getStartOffset(), marker.getEndOffset(), placeHolderText);
After Change
region.setExpanded(state);
}
}
for (RangeMarker marker : myRangeMarkers) {
if (!marker.isValid()) {
continue;
}
FoldRegion region = FoldingUtil.findFoldRegion(editor, marker.getStartOffset(), marker.getEndOffset());
if (region == null) {
FoldingInfo info = marker.getUserData(FOLDING_INFO_KEY);
region = editor.getFoldingModel().addFoldRegion(marker.getStartOffset(), marker.getEndOffset(), info.placeHolder);
if (region == null) {
return;
}
}
FoldingInfo fi = region.getUserData(FOLDING_INFO_KEY);
boolean state = fi != null && fi.expanded;
region.setExpanded(state);
}
}